package cqrtplm.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.github.pagehelper.PageInfo;
import com.hustcad.plm.pdm.file.handler.response.ResponseResult;
import cqrtplm.dto.RtCfgDspfDemandMainQueryDTO;
import cqrtplm.entity.RtCfgDspfDemandMain;
import cqrtplm.vo.RtCfgDspfDemandMainVO;
import cqrtplm.vo.TransitOrderResponseVO;

import java.math.BigInteger;
import java.util.List;
import java.util.Map;

/**
 * 需求主表Service接口
 *
 * @author 江小雄
 * @date 2025-07-10
 */
public interface IRtCfgDspfDemandMainService
{
    /**
     * 查询需求主表
     *
     * @param kid 需求主表主键
     * @return 需求主表
     */
    public RtCfgDspfDemandMain selectRtCfgDspfDemandMainByKid(String kid);

    /**
     * 查询需求主表列表
     *
     * @param rtCfgDspfDemandMain 需求主表
     * @return 需求主表集合
     */
    public List<RtCfgDspfDemandMain> selectRtCfgDspfDemandMainList(RtCfgDspfDemandMain rtCfgDspfDemandMain);

    /**
     * 新增需求主表
     *
     * @param rtCfgDspfDemandMain 需求主表
     * @return 结果
     */
    public int insertRtCfgDspfDemandMain(RtCfgDspfDemandMain rtCfgDspfDemandMain);

    /**
     * 修改需求主表
     *
     * @param rtCfgDspfDemandMain 需求主表
     * @return 结果
     */
    public int updateRtCfgDspfDemandMain(RtCfgDspfDemandMain rtCfgDspfDemandMain);

    /**
     * 批量删除需求主表
     *
     * @param kids 需要删除的需求主表主键集合
     * @return 结果
     */
    public int deleteRtCfgDspfDemandMainByKids(String[] kids);

    /**
     * 删除需求主表信息
     *
     * @param kid 需求主表主键
     * @return 结果
     */
    public int deleteRtCfgDspfDemandMainByKid(String kid);

    PageInfo<RtCfgDspfDemandMainVO> selectPageList(RtCfgDspfDemandMainQueryDTO queryDTO, int pageNum, int pageSize);

    PageInfo<RtCfgDspfDemandMainVO> selectPageListDaiban(RtCfgDspfDemandMainQueryDTO queryDTO, int pageNum, int pageSize);

    void workFlowXqsp(BigInteger finalWorkFlowContainerId) throws JsonProcessingException;

    void workFlowPqsp(BigInteger finalWorkFlowContainerId);

    void workFlowCpmfb(BigInteger finalWorkFlowContainerId);

    Map<String,Integer> workIsCrew(BigInteger finalWorkFlowContainerId,String nodeids);

    void workIsPlan(BigInteger finalWorkFlowContainerId,String nodeIdValue);

    void setLeader(BigInteger finalWorkFlowContainerId, String condition, String node);

    void workSendSapAndMom(BigInteger bigInteger);

    void workBomVerify(BigInteger bigInteger);

    void parallelNodeCheckListener(BigInteger bigInteger, String nodeIds);

    ResponseResult getTransitOrder(RtCfgDspfDemandMainQueryDTO dto);

    void workBomZdVerify(BigInteger bigInteger);

    ResponseResult getFlowDataByFlowCode(String flowCode);
}
